﻿using System;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Syndication;
using System.Xml.Serialization;
using NCMIS.ObjectModel.MetaData;
using NCMIS.Produce;

namespace NCMIS.ServiceModel.Ra
{
    public partial interface IService
    {
        [IncludeXmlDeclaration]
        [OperationContract(Name = "getRepositoryInfo")]
        AtomPub10ServiceDocumentFormatter GetServiceDocument(string repositoryId);

        [IncludeXmlDeclaration]
        [OperationContract(Name = "getTypeChildren")]
        Atom10FeedFormatter GetTypeChildren(string repositoryId, string typeId, bool includePropertyDefinitions, int maxItems, int skipCount);

        [IncludeXmlDeclaration]
        [OperationContract(Name = "getTypeDescendants")]
        Atom10FeedFormatter GetTypeDescendants(string repositoryId, string typeId, int depth, bool includePropertyDefinitions);

        [IncludeXmlDeclaration]
        [OperationContract(Name = "getTypeDefinition")]
        Atom10ItemFormatter GetTypeDefinition(string repositoryId, string typeId);
    }
}
